//package com.demo.sender.email;
//
//import com.demo.common.ResultData;
//import com.demo.enums.EmailChannelEnum;
//import org.apache.commons.lang3.ObjectUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//
//import java.util.List;
//
///**
// * @author wangfengchen
// */
//@Component
//public class EmailSender {
//
//
//  @Autowired
//  private AwsEmailSender awsEmailSender;
//  @Autowired
//  private MailGunEmailBasicSender mailGunEmailSender;
//
//  /**
//   * 多渠道发送邮件切换
//   */
//  @Value("${email.sender:aws}")
//  private String emailSender;
//
//  /**
//   * 发送电子邮件
//   *
//   * @param toAddresses 接收者电子邮件地址
//   * @param subject     邮件主题
//   * @param bodyHtml    邮件HTML正文
//   * @param bodyText    邮件文本正文（可选）
//   * @return ResultData 响应对象
//   */
//  public ResultData<Object> send(String toAddresses, String subject, String bodyHtml, String bodyText) {
//    EmailChannelEnum emailSenderEnum = EmailChannelEnum.match(emailSender.toUpperCase());
//    // 默认aws
//    if (ObjectUtils.isEmpty(emailSenderEnum)) {
//      emailSenderEnum = EmailChannelEnum.AWS;
//    }
//    // 判断发送渠道
//    switch (emailSenderEnum) {
//      case AWS:
//        return awsEmailSender.send(toAddresses, subject, bodyHtml, bodyText);
//      case MAILGUN:
//        return mailGunEmailSender.send(toAddresses, subject, bodyHtml, bodyText);
//      default:
//        return awsEmailSender.send(toAddresses, subject, bodyHtml, bodyText);
//    }
//  }
//
//  /**
//   * 发送电子邮件
//   *
//   * @param toAddresses 接收者电子邮件地址
//   * @param subject     邮件主题
//   * @param bodyHtml    邮件HTML正文
//   * @param bodyText    邮件文本正文（可选）
//   * @return ResultData 响应对象
//   */
//  public ResultData<Object> sendList(List<String> toAddresses, String subject, String bodyHtml, String bodyText) {
//    EmailChannelEnum emailSenderEnum = EmailChannelEnum.match(emailSender.toUpperCase());
//    // 默认aws
//    if (ObjectUtils.isEmpty(emailSenderEnum)) {
//      emailSenderEnum = EmailChannelEnum.AWS;
//    }
//    // 判断发送渠道
//    switch (emailSenderEnum) {
//      case AWS:
//        return awsEmailSender.sendList(toAddresses, subject, bodyHtml, bodyText);
////      case MAILGUN:
////        return mailGunEmailSender.send(toAddresses, subject, bodyHtml, bodyText);
//      default:
//        return awsEmailSender.sendList(toAddresses, subject, bodyHtml, bodyText);
//    }
//  }
//
//  /**
//   * 异步发送电子邮件
//   *
//   * @param toAddresses 接收者电子邮件地址
//   * @param subject     邮件主题
//   * @param bodyHtml    邮件HTML正文
//   * @param bodyText    邮件文本正文（可选）
//   * @return ResultData 响应对象
//   */
//  public ResultData<Object> sendAsync(String toAddresses, String subject, String bodyHtml, String bodyText) {
//    EmailChannelEnum emailSenderEnum = EmailChannelEnum.match(emailSender.toUpperCase());
//    // 默认awsø
//    if (ObjectUtils.isEmpty(emailSenderEnum)) {
//      emailSenderEnum = EmailChannelEnum.AWS;
//    }
//    // 判断发送渠道
//    switch (emailSenderEnum) {
//      case AWS:
//        return awsEmailSender.sendAsync(toAddresses, subject, bodyHtml, bodyText);
//      case MAILGUN:
//        return mailGunEmailSender.sendAsync(toAddresses, subject, bodyHtml, bodyText);
//      default:
//        return awsEmailSender.sendAsync(toAddresses, subject, bodyHtml, bodyText);
//    }
//  }
//
//  /**
//   * 异步发送电子邮件
//   *
//   * @param toAddresses 接收者电子邮件地址
//   * @param subject     邮件主题
//   * @param bodyHtml    邮件HTML正文
//   * @param bodyText    邮件文本正文（可选）
//   * @return ResultData 响应对象
//   */
//  public ResultData<Object> sendAsyncList(List<String> toAddresses, String subject, String bodyHtml, String bodyText) {
//    EmailChannelEnum emailSenderEnum = EmailChannelEnum.match(emailSender.toUpperCase());
//    // 默认awsø
//    if (ObjectUtils.isEmpty(emailSenderEnum)) {
//      emailSenderEnum = EmailChannelEnum.AWS;
//    }
//    // 判断发送渠道
//    switch (emailSenderEnum) {
//      case AWS:
//        return awsEmailSender.sendAsyncList(toAddresses, subject, bodyHtml, bodyText);
//      case MAILGUN:
//        return mailGunEmailSender.sendAsyncList(toAddresses, subject, bodyHtml, bodyText);
//      default:
//        return awsEmailSender.sendAsyncList(toAddresses, subject, bodyHtml, bodyText);
//    }
//  }
//
//
//}
